<script>
	import _action from './common/_action';
	import _get from './common/_get';
	import _data from './common/_data';
	import _custom from './common/_custom.js'
	import permision from 'plugins/js_sdk/wa-permission/permission.js'
	// #ifdef APP-PLUS
	var jpushModule = uni.requireNativePlugin("JG-JPush");
	// #endif

	
	export default {
		globalData: {
			agent_id: 0,
			/** http 服务端地址 */
			http_url: 'http://221.226.178.122:1891',
			
			/** 替换中间件服务端地址,用java开发 */
			http_java_url: 'http://127.0.0.1:8886',
			
			/** 静态文件存放地址 */
			static_url: 'http://221.226.178.122:1891',
			/** socket 服务端地址 */
			socket_url: 'ws://221.226.178.122:1890',
			/** 静态图片地址 */
			static_img: 'http://221.226.178.122:1884',
			// 上传地址
			http_upload_url: 'http://221.226.178.122:1880/uFASTAPI/ubaoPicUpAPIservice.asq',
			
			/** socket 连接状态 */
			socket_state: 0,
			/** 好友申请通知 */
			new_friend_tips_num: 0,
			/** 群认证通知 */
			new_group_tips_num: 0,
			/** 朋友圈通知 */
			no_reader_circle: 0,
			/** 朋友圈消息未读数 */
			
			no_reader_circle_chat_num: 0,
			/** 缓存的数据 */
			cache: {
				/** 个人头像缓存数据 */
				local_photo: '',
			},
			/** 用户信息 */
			user_info: {
				id: 0,
				nickname: '',
				username: '',
				photo: 'default_man/70.jpg',
				doodling: '',
				circle_img: 'default_circle_img.jpg?_=3.1415926',
			},
			/** 应用信息 */
			appname: '',
			version: '',
		},
		onLaunch() {
			// #ifdef APP-PLUS
			/** 获取app版本号、名字 */
			plus.runtime.getProperty(plus.runtime.appid, function(info) {
				_data.data('appname',info.name);
				_data.data('version',info.version);
			})
			/** 锁定屏幕方向 */
			plus.screen.lockOrientation('portrait-primary');
			
			//极光推送plus.push.getClientInfo().clientid;
			jpushModule.setLoggerEnable(true);
			jpushModule.initJPushService()
			jpushModule.addConnectEventListener(result=>{
				let connectEnable = result.connectEnable
			})
			jpushModule.getRegistrationID(result => {
				console.log(result.registerID)
				if(result.registerID == '' || result.registerID == 0) {
					uni.showModal({
						title: '提示',
						content: '初始化应用成功，请重启应用',
						showCancel: false,
						success: function (res) {
							if (res.confirm) {
								plus.runtime.quit();
							}
						}
					});
				}
				if(result.registerID){
					_data.localData('register_id',result.registerID)
				}
			})
			let notification = {}
			jpushModule.addNotificationListener(result=>{
				let notificationEventType = result.notificationEventType
				let messageID = result.messageID
				let title = result.title
				let content = result.content
				let extras = result.extras
				if(result.notificationEventType == 'notificationOpened') {
					if(extras.listid) {
						uni.navigateTo({
							url: '/pages/chat/message?list_id=' + extras.listid + '&worktype=' + extras.worktype
						})
					}
				}
			})
			
			jpushModule.addCustomMessageListener(result=>{
				notification = result
			})
			
			// #endif
			
		},
		onShow() {
			if(!_data.localData('token')){
				return;
			}
			// #ifdef APP-PLUS
			//浏览器唤醒app后的操作
			setTimeout(() => {
				var args= plus.runtime.arguments;
				console.log(args)
				if(args){
					try {
						let index = args.indexOf('?');
						let params = args.substring(index+1);
						let obj = {};
						let vars = params.split("&");
						for (let i=0;i < vars.length;i++) {
							let pair = vars[i].split("=");
							obj[pair[0]] = decodeURI(pair[1])
						}
						let route = obj['route'];
						switch(route) {
							case "1"://跳转到帖子详情页
								let id = obj['id'];
								uni.navigateTo({
									url: '/pages/community/subject-view?businessId=' + id
								})
								break;
						}
					} catch(e) {}
					
				}
			},200)
			// #endif
			
			setTimeout(() => {
			   /**
				* 每次app启动都加载最新的会话列表数据，只要是最新的会话列表数据，会话界面数据也会是最新的
				* 这里延时100ms,不然会全局变量没有加载完成，会报错。
				*/
				_get.getChatList();
			},100);
			
			//连接成功一分钟后开始心跳检测，如果超过40秒没有收到服务器的心跳包，就重新连接socket
			setTimeout(function(){
				setInterval(function(){
					const time = Date.parse(new Date())/1000
					const socket_heartbeat = parseInt(_data.localData('socket_heartbeat'))
					if(socket_heartbeat && (time - socket_heartbeat) > 40){
						/** 断开重新再连接，再获取最新数据 */
						_data.data('socket_state',0);
						uni.closeSocket();
						_this.$socketSend();
						_get.getChatList();
					} else {
						if(_data.localData('token')){
							// 判断当前用户是否绑定clientID
							_this.$httpSend({
								path: '/im/message/checkUid',
								data: {
									token: _data.localData('token'),
								},
								success_action: true,
								success(res) {
									const clientID = res.data.client_id
									if (clientID.length == 0){
										/** 断开重新再连接，再获取最新数据 */
										_data.data('socket_state',0);
										uni.closeSocket();
										_this.$socketSend();
										_get.getChatList();
									}
								}
							});
						}
					}
				},40000)
			},60000)
			
			
			let _this = this;
			
			/**
			 * @param {Object} res
			 * 监听网络变化
			 * 如果有网络变化，断开socket，再重新连接
			 * 重新获取会话列表数据
			 * 如果是在会话界面，再重新获取这个的对话数据
			 */
			uni.onNetworkStatusChange(function (res) {
				/** 断开重新再连接，再获取最新数据 */
				_data.data('socket_state',0);
				uni.closeSocket();
				_this.$socketSend();
				_get.getChatList();
				
				if(_data.localData('message_list_id')){
					_get.getChatData({
						send_data: {
							list_id: _data.localData('message_list_id'),
							time: 0,
							is_up: 1,
						},
						is_action_data: 1,
					});
				}
			});
		},
		onHide() {
			plus.runtime.arguments = "";
		},
	}
</script>

<style>
	/* #ifndef APP-PLUS-NVUE */
	@import 'animate.css';
	/* #ifndef APP-PLUS-NVUE */
	/** uni.css - 通用组件、模板样式库，可以当作一套ui库应用 */
	@import './static/css/uni.css';
	/** 设置 body 的背景色 */
	page {
		background-color: #F4F5F6;
	}
	/** 导航栏自定义图标样式调整 */
	.uni-page-head .uni-btn-icon {
		min-width: auto !important;
		overflow: inherit !important;
	}
	/* #endif */
	
	.uni-tabbar {
		display: flex !important;
	}
	/* #endif */
</style>
<style lang="scss">
	/*每个页面公共css */
	/* #ifndef APP-PLUS-NVUE */
	@import "@/uni_modules/uview-ui/index.scss";
	@import "@/static/iconfont.css";
	@import '@/static/iconfont/iconfont.css';
	
	@import "@/components/active-form/css/active-form.scss";//注入active-form样式
	
	.clickable {
		background-color: rgba(139, 139, 139, 0.1);
	}
	
	.active {
		background-color: #6AD7F8 !important;
	}
	
	.prevent {
		width: 100%;
		height: 100%; 
		position: fixed !important;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 1;
		overflow: hidden;
	}
	
	.center {
		display: flex;
		justify-content: center;
		align-items: center;
	}
	
	.ellipsis {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	
	.multiple-ellipsis {
		overflow: hidden;
		text-overflow: ellipsis;
		display:-webkit-box; //作为弹性伸缩盒子模型显示。
		-webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
		-webkit-line-clamp:2; //显示的行
	}
	/* #endif */
	
	/* #ifdef H5 */
	uni-modal {
		z-index: 999999999999999 !important;
	}
	/* #endif */
</style>